package com.ruoyi.admin.service.impl;

import java.util.List;

import com.ruoyi.admin.domain.ZhxBook;
import com.ruoyi.admin.domain.vo.ZhxBookAndInfoVo;
import com.ruoyi.admin.mapper.ZhxBookMapper;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.admin.mapper.ZhxCollectBookMapper;
import com.ruoyi.admin.domain.ZhxCollectBook;
import com.ruoyi.admin.service.IZhxCollectBookService;

/**
 * 用户收藏书籍Service业务层处理
 * 
 * @author ruoyi
 * @date 2024-11-11
 */
@Service
public class ZhxCollectBookServiceImpl implements IZhxCollectBookService 
{
    @Autowired
    private ZhxCollectBookMapper zhxCollectBookMapper;

    @Autowired
    private ZhxBookMapper zhxBookMapper;

    /**
     * 查询用户收藏书籍
     * 
     * @param collectBookId 用户收藏书籍主键
     * @return 用户收藏书籍
     */
    @Override
    public ZhxCollectBook selectZhxCollectBookByCollectBookId(Long collectBookId)
    {
        return zhxCollectBookMapper.selectZhxCollectBookByCollectBookId(collectBookId);
    }

    /**
     * 查询用户收藏书籍列表
     * 
     * @param zhxCollectBook 用户收藏书籍
     * @return 用户收藏书籍
     */
    @Override
    public List<ZhxCollectBook> selectZhxCollectBookList(ZhxCollectBook zhxCollectBook)
    {
        return zhxCollectBookMapper.selectZhxCollectBookList(zhxCollectBook);
    }

    /**
     * 查询用户收藏书籍列表
     * and书籍信息
     * @param zhxCollectBook 用户收藏书籍
     * @return 用户收藏书籍
     */
    @Override
    public List<ZhxBookAndInfoVo> selectZhxCollectBookListAndInfoVo(ZhxCollectBook zhxCollectBook)
    {
        return zhxCollectBookMapper.selectZhxCollectBookListAndInfo(zhxCollectBook);
    }

    /**
     * 新增用户收藏书籍
     * 
     * @param zhxCollectBook 用户收藏书籍
     * @return 结果
     */
    @Override
    public int insertZhxCollectBook(ZhxCollectBook zhxCollectBook)
    {
        zhxCollectBook.setCreateTime(DateUtils.getNowDate());
        return zhxCollectBookMapper.insertZhxCollectBook(zhxCollectBook);
    }

    /**
     * 新增用户收藏书籍
     * 书籍收藏数+1
     * 书籍人气值+5
     * @param zhxCollectBook 用户收藏书籍
     * @return 结果
     */
    @Override
    public int insertZhxCollectBookTodo(ZhxCollectBook zhxCollectBook)
    {
        ZhxBook zhxBook = zhxBookMapper.selectZhxBookByBookId(zhxCollectBook.getBookId());
        // 书籍收藏数+1
        zhxBook.setCollectNum(zhxBook.getCollectNum() + 1);
        // 书籍人气值+5
        zhxBook.setPopularity(zhxBook.getPopularity() + 5);
        zhxBookMapper.updateZhxBook(zhxBook);
        zhxCollectBook.setUserId(SecurityUtils.getUserId());
        zhxCollectBook.setCreateTime(DateUtils.getNowDate());
        return zhxCollectBookMapper.insertZhxCollectBook(zhxCollectBook);
    }

    /**
     * 修改用户收藏书籍
     * 
     * @param zhxCollectBook 用户收藏书籍
     * @return 结果
     */
    @Override
    public int updateZhxCollectBook(ZhxCollectBook zhxCollectBook)
    {
        return zhxCollectBookMapper.updateZhxCollectBook(zhxCollectBook);
    }

    /**
     * 批量删除用户收藏书籍
     * 
     * @param collectBookIds 需要删除的用户收藏书籍主键
     * @return 结果
     */
    @Override
    public int deleteZhxCollectBookByCollectBookIds(Long[] collectBookIds)
    {
        return zhxCollectBookMapper.deleteZhxCollectBookByCollectBookIds(collectBookIds);
    }

    /**
     * 删除用户收藏书籍信息
     * 
     * @param collectBookId 用户收藏书籍主键
     * @return 结果
     */
    @Override
    public int deleteZhxCollectBookByCollectBookId(Long collectBookId)
    {
        return zhxCollectBookMapper.deleteZhxCollectBookByCollectBookId(collectBookId);
    }

    /**
     * 删除用户收藏书籍信息
     * 书籍收藏数-1
     * 书籍人气值-5
     * @param collectBookId 用户收藏书籍主键
     * @return 结果
     */
    @Override
    public int deleteZhxCollectBookByCollectBookIdTodo(Long collectBookId)
    {
        ZhxBook zhxBook = zhxBookMapper.selectZhxBookByBookId(collectBookId);
        // 书籍收藏数-1
        zhxBook.setCollectNum(zhxBook.getCollectNum() - 1);
        // 书籍人气值-5
        zhxBook.setPopularity(zhxBook.getPopularity() - 5);
        zhxBookMapper.updateZhxBook(zhxBook);
        return zhxCollectBookMapper.deleteZhxCollectBookByCollectBookId(collectBookId);
    }

}
